﻿// <copyright file="IGameFragment.cs" company="SingularityShift.com">
// Copyright (c) 2010 SingularityShift.com. All rights reserved.
// </copyright>
// <author>Ben McClure</author>
// <email>ben@singularityshift.com</email>
// <date>12/2/2010</date>
// <summary>Declares the IGameFragment interface</summary>
namespace GameLib.Games
{
    using GameLib.Games.CompositeModel;

    /// <summary> Interface for game fragment. This has no parent or siblings and has one or more child components.
    /// </summary>
    /// <remarks>
    /// <para>A game fragment has no parent or siblings. It generally has one or more child components.</para>
    /// <para>A game fragment should be used as the top-level component when you are extracting components from a game,
    /// or creating components that are not part of a game.</para>
    /// <para>By design, components should never be without an <see cref="IClient"/> or IGameFragment at the top of their
    /// tree.</para>
    /// <para>Game fragments are not inheritable. They are a top-level component whose only purpose is to contain other components.</para>
    /// <para>Ben McClure, 12/2/2010.</para>
    /// </remarks>
    public interface IGameFragment : IGameComponent, IContainer
    {
    }
}
